<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>引出生命周期</title>
        <script type="text/javascript" src="../js/vue.js"></script>
    </head>
    <body>
        <!--
            生命周期:
                a. 又名生 **命周期回调函数** 、生命周期函数、生命周期钩子
                b. 是什么： `Vue` 在关键时刻帮我们调用的一些特殊名称的函数
                c. **生命周期函数的名字不可更改** ，但函数的具体内容是程序员根据需求编写的
                d. 生命周期函数中的 **this** 指向是 `vm` 或 **组件实例对象**
         -->
        <div id="root">
            <h2 v-if="a">你好啊</h2>
            <h2 :style="{opacity}">欢迎学习Vue</h2>
        </div>
    </body>

    <script type="text/javascript">
        Vue.config.productionTip = false;

        new Vue({
            el: '#root',
            data: {
                a: false,
                opacity: 1,
            },
            methods: {},
            // Vue完成模板解析并把初始的真实的DOM元素放入页面后(挂载完毕)调用mounted
            mounted() {
                console.log('mounted', this);
                setInterval(() => {
                    this.opacity -= 0.01;
                    if (this.opacity < 0) {
                        this.opacity = 1;
                    }
                }, 16);
            },
        });

        // 通过外部的定时器实现（不推荐）
        // setInterval(() => {
        //   vm.opacity -= 0.01
        //   if(vm.opacity <= 0) vm.opacity = 1
        // },16)
    </script>
</html>
